package 数据结构.章节09._160_栈;

import 数据结构.章节09._148_双链表.DoubleLinkedList;
import 数据结构.章节09._148_双链表.ListNode;

import java.util.EmptyStackException;

/**
 * @author 挚爱之夕
 * @date 2021/10/13 - 10 - 13 - 14:59
 * @Description: 数据结构.章节09._160_栈
 * @Version: 1.0
 */
/*
实现接口时，一个已有类可以帮助实现接口，可以继承该类，协助实现接口
 */
public class MyStack<T> extends DoubleLinkedList<T> implements MyStackInterface<T> {
    @Override
    public void push(T e) {
        super.add(e);
    }

    @Override
    public T pop() {
        if(size<=0) throw new EmptyStackException();
        //得到元素
        ListNode<T> now = last.getPre();
        T res = now.getData();
        //删除操作
        now.getPre().setNext(last);
        last.setPre(now.getPre());
        now.setPre(null);
        now.setNext(null);
        size--;
        return res;
    }

    @Override
    public boolean isEmpty() {
        return size == 0;
    }

    @Override
    public T peek() {
        return last.getPre().getData();
    }

    @Override
    public int getSize() {
        return size;
    }
}
